// 时间相关公共工具（使用 dayjs，避免与 moment 重复）
import dayjs from 'dayjs'

// 规范化日期时间字符串，确保最终格式包含秒：YYYY-MM-DD HH:mm:ss
// 支持几种输入：
// 1. 'YYYY-MM-DD HH:mm:ss' -> 原样返回（仅替换 T 为 空格）
// 2. 'YYYY-MM-DD HH:mm'    -> 补 ':00'
// 3. 'YYYY-MM-DD HH'       -> 补 ':00:00'
// 4. ISO 带 T 的上述三种形式 -> 去掉 T 以后按同规则补秒
// 其它不符合的字符串原样返回
export function normalizeDateTime(val, defaultMinute = '00') {
	if (!val) return val
	let v = String(val).trim().replace('T', ' ') // 兼容 T 分隔
	// 完整到秒
	if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(v)) return v
	// 到分钟
	if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/.test(v)) return v + ':00'
	// 仅到小时
	if (/^\d{4}-\d{2}-\d{2} \d{2}$/.test(v)) return `${v}:${defaultMinute}:00`
	return v
}

// 判断结束时间 >= 开始时间（支持字符串或 Date）
export function isEndAfterOrEqual(begin, end) {
	if (!begin || !end) return false
	return !dayjs(end).isBefore(dayjs(begin))
}

// 将两个时间同时规范化并做校验，返回 { beginTime, endTime, valid }
export function normalizeAndValidateRange(begin, end) {
	const b = normalizeDateTime(begin)
	const e = normalizeDateTime(end)
	return { beginTime: b, endTime: e, valid: isEndAfterOrEqual(b, e) }
}

export default {
	normalizeDateTime,
	isEndAfterOrEqual,
	normalizeAndValidateRange,
}
